package 链表;

/* https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ */

public class _83_删除排序链表中的重复元素 {

    public class ListNode {
        // value
        int val;
        // next
        ListNode next;
        // 无参的构造函数
        ListNode() {}
        // 含参的构造函数
        ListNode(int val) { this.val = val; }
        ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }
    public ListNode deleteDuplicates(ListNode head) {
        // 解题核心：从头开始比较相邻的两个node，定义一个变量指向当前的node
        // 定义cur_node表示现在的结点,head依然是head，只不过cur_node循环刚开始的时候指向head（要搞清楚head指代的是头结点，即链表从head开始的）
        ListNode cur_node = head;
        if (head == null){
            return null;
        }
        // 当next不为空的时候
        while(cur_node.next != null){
            if (cur_node.val == cur_node.next.val){
                cur_node.next = cur_node.next.next;
            }else {
                cur_node = cur_node.next;
            }
        }
        return head;
    }
}
